using System;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace B.S.Data.MES.API.Services
{
    /// <summary>
    /// 天气信息
    /// </summary>
    public class WeatherInfo
    {
        /// <summary>
        /// 地区名称
        /// </summary>
        public string RegionName { get; set; }
        
        /// <summary>
        /// 当前温度（摄氏度）
        /// </summary>
        public int CurrentTemperature { get; set; }
        
        /// <summary>
        /// 天气状况
        /// </summary>
        public string WeatherCondition { get; set; }
        
        /// <summary>
        /// 体感温度（摄氏度）
        /// </summary>
        public int FeelsLikeTemperature { get; set; }
        
        /// <summary>
        /// 湿度（百分比）
        /// </summary>
        public int Humidity { get; set; }
        
        /// <summary>
        /// 风速（km/h）
        /// </summary>
        public int WindSpeed { get; set; }
        
        /// <summary>
        /// 更新时间
        /// </summary>
        public DateTime UpdateTime { get; set; }
    }
    
    /// <summary>
    /// 天气预报信息
    /// </summary>
    public class WeatherForecast
    {
        /// <summary>
        /// 日期
        /// </summary>
        public DateTime Date { get; set; }
        
        /// <summary>
        /// 最低温度（摄氏度）
        /// </summary>
        public int MinTemperature { get; set; }
        
        /// <summary>
        /// 最高温度（摄氏度）
        /// </summary>
        public int MaxTemperature { get; set; }
        
        /// <summary>
        /// 天气状况
        /// </summary>
        public string WeatherCondition { get; set; }
        
        /// <summary>
        /// 降水概率（百分比）
        /// </summary>
        public int PrecipitationProbability { get; set; }
    }
    
    /// <summary>
    /// 天气服务接口
    /// </summary>
    public interface IWeatherService
    {
        /// <summary>
        /// 根据地区名称获取当前天气信息
        /// </summary>
        /// <param name="regionName">地区名称</param>
        /// <returns>天气信息</returns>
        Task<WeatherInfo> GetWeatherByRegionAsync(string regionName);
        
        /// <summary>
        /// 获取指定地区近七天的天气预报
        /// </summary>
        /// <param name="regionName">地区名称</param>
        /// <returns>近七天天气预报</returns>
        Task<List<WeatherForecast>> Get7DayWeatherForecastAsync(string regionName);
    }
}